package com.anyou.mall.use.service;

import java.util.List;

import com.anyou.common.core.domain.ApiResult;
import com.anyou.mall.index.param.OrderNumParam;
import com.anyou.mall.index.param.UserNumParam;
import com.anyou.mall.index.vo.OrderAnalysis;
import com.anyou.mall.index.vo.OrderTypeAnaVo;
import com.anyou.mall.index.vo.OrderTypeAnaVo2;
import com.anyou.mall.index.vo.UserNum;
import com.anyou.mall.use.domain.User;
import com.anyou.mall.use.param.NoticeListParam;
import com.anyou.mall.use.param.UserChildParam;
import com.anyou.mall.use.param.UserIntegralParam;
import com.anyou.mall.use.vo.IntegralRecordVo;
import com.anyou.mall.use.vo.UserQuerySubordinateVo;
import com.anyou.mall.use.vo.UserQueryVo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 用户管理Service接口
 *
 * @author gaochaohao
 * @date 2022-03-21
 */
public interface IUserService extends IService<User>
{
    /**
     * 查询用户管理
     *
     * @param userId 用户管理主键
     * @return 用户管理
     */
    public UserQueryVo selectUserByUserId(Long userId);

    /**
     * 查询用户管理列表
     *
     * @param user 用户管理
     * @return 用户管理集合
     */
    public List<User> selectUserList(User user);

    /**
     * 查询用户积分列表
     *
     * @return 用户管理集合
     */
    public List<IntegralRecordVo> userIntegralList(UserIntegralParam param);

    /**
     * 新增用户管理
     *
     * @param user 用户管理
     * @return 结果
     */
    public int insertUser(User user);

    /**
     * 修改用户管理
     *
     * @param user 用户管理
     * @return 结果
     */
    public int updateUser(User user);

    /**
     * 批量删除用户管理
     *
     * @param userIds 需要删除的用户管理主键集合
     * @return 结果
     */
    public int deleteUserByUserIds(Long[] userIds);

    /**
     * 删除用户管理信息
     *
     * @param userId 用户管理主键
     * @return 结果
     */
    public int deleteUserByUserId(Long userId);

    /**
     * 修改用户状态
     * @param userId
     * @return
     */
    public ApiResult updateUserStatus(Long userId);

    /**
     * 查询通知用户列表
     * @param noticeListParam
     * @return
     */
    List<User> selectNoticeUserList(NoticeListParam noticeListParam);

    /**
     * 新增用户折线走势图
     * @param userNumParam
     * @return
     */
    List<UserNum> getUserNumByDate(UserNumParam userNumParam);

    /**
     * 订单分析饼图
     * @param userNumParam
     * @return
     */
    OrderAnalysis getOrderAnalysis(UserNumParam userNumParam);

    /**
     * 订单类型分析饼图
     * @param param
     * @return
     */
    OrderTypeAnaVo getOrderTypeAna(UserNumParam param);

    /**
     * 订单分析环形图
     * @param param
     * @return
     */
    OrderTypeAnaVo2 getOrderToroidal(UserNumParam param);

    /**
     * 购水用途饼状图
     * @param param
     * @return
     */
    OrderTypeAnaVo2 waterUse(OrderNumParam param);

    /**
     * 用户下级用户列表
     * @param param
     * @return
     */
    List<UserQuerySubordinateVo> userChildList(UserChildParam param);

    /**
     * 用户积分发明细
     * @param param
     * @return
     */
    List<IntegralRecordVo> userJfList(UserChildParam param);
}
